<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script src="../js/tools.js"></script>
    <script>

        // const str = 'h' ;   // String
        // str.substring(0,1) ;    // 实例的方法

        // String.fromCharCode(65);    // 构造函数自身的方法


        // Array.isArray()   // 构造函数的方法




        // const keJi = new Dog() ;





        // Promise构造函数自身的方法  
        //   Promise.all()   参数是一个数组，数组中的值是promise实例 ，返回新的promise实例


        const p1 = new Promise(resolve => {
            ajax({
                type : 'get' , 
                path : '../data/1.php' ,
                success : res => {
                    // console.log(res);
                    resolve(res) ;
                    
                }
            })
        })

        const p2 = new Promise(resolve => {
            ajax({
                type : 'get' , 
                path : '../data/2.php' ,
                success : res => {
                    // console.log(res);
                    resolve(res) ;
                    
                }
            })
        })


        const p3 = new Promise(resolve => {
            ajax({
                type : 'get' , 
                path : '../data/3.php' ,
                success : res => {
                    // console.log(res);
                    resolve(res) ;
                    
                }
            })
        })

        // 把多个promise实例的结果按照顺序，返回到新的promise实例中，且会按照顺序接收
        const p = Promise.all([p1,p2,p3]) ;
        
        console.log(p);

        p.then(res => {
            console.log(res);   // [1,2,3]
        })







        const pp1 = new Promise((resolve , reject) => {
            setTimeout(() => {
                const n = parseInt(Math.random() * 100) ;
                if(n % 2 === 0) {
                    resolve(n + '第一次成功') ;
                } else {
                    reject(n + '第一次失败') ;
                }
            })
        })

        const pp2 = new Promise((resolve , reject) => {
            setTimeout(() => {
                const n = parseInt(Math.random() * 100) ;
                if(n % 2 === 0) {
                    resolve(n + '第二次成功') ;
                } else {
                    reject(n + '第二次失败') ;
                }
            })
        })

        const pp3 = new Promise((resolve , reject) => {
            setTimeout(() => {
                const n = parseInt(Math.random() * 100) ;
                if(n % 2 === 0) {
                    resolve(n + '第三次成功') ;
                } else {
                    reject(n + '第三次失败') ;
                }
            })
        })


        // 所有的实例都成功，则新的实例返回成功的数组
        // 只有有失败的，谁先失败就返回谁失败的结果作为新的实例的失败的结果
        const pp = Promise.all([pp1,pp2,pp3]) ;

        pp.then(res => {
            console.log(res);
        }).catch(err => {
            console.log(err);
        })


    </script>


    
</body>
</html>